package org.test.character.socket;

import java.io.FileInputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

import javax.net.ServerSocketFactory;

import org.apache.commons.lang.SerializationUtils;

public class ServerSock {

	public static void main(String args[]) throws Exception {
		ServerSocketFactory ssf = ServerSocketFactory.getDefault();
		ServerSocket ss = ssf.createServerSocket(5410);
		System.out.println("Waiting for connection...");
		while (true) { // 接收客户端

			/** 以下为接收客户端 */
			byte[] b = new byte[100];
			Socket s = ss.accept();
			FileInputStream fis = (FileInputStream) s.getInputStream();// 这里可以直接用inputStream...?

			while (true) { // 客户端的多次数据传送
			fis.read(b); //填充b
				// System.out.println(Arrays.toString(b));
				if (CustommerUtil.indexofzero(b) == 0) {// 判断客户端是否断开
					s.close();
					System.out.println("客户端断开");
					break;
				}
				Date date = (Date)SerializationUtils.deserialize(b);//接收到了字节反序列化
				System.out.println("server"+date);	
				
//				String string = new String(b, 0, CustommerUtil.indexofzero(b));// 转为string
//
//				/* 以上为接收客户端信息 */
//				System.out.println(string);
//				PrintWriter pWriter = new PrintWriter(s.getOutputStream(), true);
//				try {
//					if (CustommerUtil.judgeprime(Integer.valueOf(string))) {// 为质数
//						pWriter.write("0");
//					} else {
//						pWriter.print("1"); // 非质数
//					}
//				} catch (Exception e) {
//					// TODO Auto-generated catch block
//					pWriter.print("-1");
//					e.printStackTrace();
//				} finally {
//					pWriter.println(); // 这里回车
//					pWriter.flush();
//					// pWriter.close();//这里会把关联的也close,这里是socket,但不用这个,
//					// 数据又推不出去???
//					// !!数据要加个回车,换行就行了.这个方法不能调用
//				}
//				CustommerUtil.cleartozero(b);// byte[] b清0
			}

		}
	}
}